A computer system typically includes, in addition to the computer itself, one or more peripheral devices, such as printers, magnetic tape drives, hard disk drives, floppy disk drives, removable cartridge drives, modems, etc. An adapter is used as the hardware connection between a peripheral device and the computer. Computers require special computer programs to support or "drive" the devices. These computer programs are commonly referred to in the computer industry as "device drivers."
Conventionally, each specific kind of device requires a unique device driver. For example, two different types of hard disk drives may require two different device drivers. With the advent of new computer interface standards such as the Small Computer Systems Interface (SCSI), it is possible for a plurality of devices to share a common adapter. However, a plurality of device drivers are often needed for a plurality of different devices even when they are attached to the same adapter.
Prior art device drivers are dependent upon the operating system for which they are written. The device driver must satisfy the device driver requirements of the operating system. A device driver written for one operating system cannot be used with a different operating system.
The ease and success with which a plurality of devices can be attached to a computer have been hampered by the independent development of incompatible device drivers, by the difficulty of testing device drivers for errors when changes or enhancements are made, and by problems arising from the unintended interaction of device drivers with each other or the operating system or other computer programs.
Prior art device drivers attempting to support devices and/or adapters are not flexible in allowing support for specific devices and adapters. The code is closely coupled. Modifications to add or delete devices or adapters cause significant increases in testing and maintenance costs.
The device driver of our invention overcomes these and other limitations and disadvantages of prior art device drivers. It is an objective or our invention to provide a device driver that is flexible and that can be configured to reflect the configuration of devices and adapters selected by the user. Another objective of our invention is to make easier the use of devices and adapters with different operating systems. These objectives and other objectives, advantages and aspects or our invention are described in the following disclosure and claims and in the accompanying drawings.